package chixing.day18.homework.work5;

public class TicketSeller implements Runnable{
    /*
    * 业务背景： 公司演出门票有限，多个售票窗口同时卖票，需要防止超卖。 需求：
            定义 TicketSeller 类，包含 tickets（剩余票数）。
            提供 sellTicket() 方法，用 synchronized 保证卖票过程的线程安全。
            创建多个线程（售票窗口）并发卖票，直到票卖完。
            每卖出一张票，打印“窗口X卖出一张票，剩余票数：Y”。
    * */

    private int tickets;

    public TicketSeller(int tickets) {
        this.tickets = tickets;
    }

    public int getTickets() {
        return tickets;
    }

    @Override
    public void run() {
        while (true){
            if (tickets <= 0){
                System.out.println("余票不足！！");
                break;
            }
            sellTicket();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }

    //售票
    public synchronized void sellTicket(){
        if (tickets>0){
            tickets--;
            System.out.println(Thread.currentThread().getName()+" 卖出一张票"+",剩余票数："+tickets);
        }
    }
}
